<file>popover.ui</file>
</gresource>
<gresource prefix="/glarea">
- <file>glarea-fragment.glsl</file>
- <file>glarea-vertex.glsl</file>
+ <file>glarea-gl.fs.glsl</file>
+ <file>glarea-gl.vs.glsl</file>
+ <file>glarea-gles.fs.glsl</file>
+ <file>glarea-gles.vs.glsl</file>
</gresource>
<gresource prefix="/font_features">
<file>font-features.ui</file>
/* Initialize the shaders and link them into a program */
static void
-init_shaders (GLuint *program_out,
+init_shaders (const char *vertex_path,
+ const char *fragment_path,
+ GLuint *program_out,
GLuint *mvp_out)
{
GLuint vertex, fragment;
int status;
GBytes *source;
- source = g_resources_lookup_data ("/glarea/glarea-vertex.glsl", 0, NULL);
+ source = g_resources_lookup_data (vertex_path, 0, NULL);
vertex = create_shader (GL_VERTEX_SHADER, g_bytes_get_data (source, NULL));
g_bytes_unref (source);
return;
}
- source = g_resources_lookup_data ("/glarea/glarea-fragment.glsl", 0, NULL);
+ source = g_resources_lookup_data (fragment_path, 0, NULL);
fragment = create_shader (GL_FRAGMENT_SHADER, g_bytes_get_data (source, NULL));
g_bytes_unref (source);
static void
realize (GtkWidget *widget)
{
+ const char *vertex_path, *fragment_path;
+ GdkGLContext *context;
+
gtk_gl_area_make_current (GTK_GL_AREA (widget));
if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
return;
+ context = gtk_gl_area_get_context (GTK_GL_AREA (widget));
+
+ if (gdk_gl_context_get_use_es (context))
+ {
+ vertex_path = "/glarea/glarea-gles.vs.glsl";
+ fragment_path = "/glarea/glarea-gles.fs.glsl";
+ }
+ else
+ {
+ vertex_path = "/glarea/glarea-gl.vs.glsl";
+ fragment_path = "/glarea/glarea-gl.fs.glsl";
+ }
+
init_buffers (&position_buffer, NULL);
- init_shaders (&program, &mvp_location);
+ init_shaders (vertex_path, fragment_path, &program, &mvp_location);
}
/* We should tear down the state when unrealizing */